.bf
Eleganter Adredecoder fr GENIE 1

Helmut Bernhardt

Als ich bei der Fehlersuche in meinem GENIE 1 durch die zahlreichen 
selbstgeschnitzten Erweiterungen und das damit verbundene Strippengewirr
selbst nicht mehr durchblickte, keimte der Gedanke, das alles 
sehr viel bersichtlicher und vllig neu zu gestalten. Als Ergebnis 
kam ein kleines Board heraus, das in den Sockel des Z80 zu stecken ist 
und den Z80 selbst mit aufnimmt. Zustzlich wird auf dem Board ein 
27128-EPROM (das anstelle der dann berflssigen Original-ROMs das 
Level-II-Basic enthlt), ein 74LS273-Latch, ein PAL16L8 (das ein
Freigabesignal fr das 74LS273 und einige zustzliche Freigabesignale
erzeugt) und ein Adredecoder-PAL20L8 (das die Freigabesignale fr alle 
memory mapped Systemkomponenten erzeugt) untergebracht. 

Die Ausgnge des Latch 74LS273 haben folgende System-Steuerfunktionen:

Q0 = 0 : 0000H-2FFFH ist beim Lesen ROM und beim Schreiben RAM
   = 1 : 0000H-2FFFH ist beim Lesen und Schreiben RAM
   
Q1 = 0 : 37E0H-37EFH ist Floppy, Drucker, INT-Status, Drive-Select
   = 1 : 37E0H-37EFH ist RAM; Floppy u.s.w. sind ber die Ports E0H- 
                     EFH erreichbar
           
Q2 = 0 : 3800H-38FFH ist beim Lesen die Tastatur und beim Schreiben 
                     RAM 
   = 1 : 3800H-38FFH ist beim Lesen und Schreiben RAM
   
Q3 = 0 : 3C00H-3FFFH ist Video-RAM
   = 1 : 3C00H-3FFFH ist RAM
   
Q4 = 0 : die memory mapped Systemkomponenten liegen im Bereich 
         0000H-3FFFH
   = 1 : die memory mapped Systemkomponenten liegen im Bereich
         C000H-FFFFH
           
Unabhngig vom Zustand von Q0-Q4 ist dauerhaft bei 3000H-37DFH, 37F0H- 
37FFH und 3900H-3BFFH RAM eingeblendet. Anstelle eines Sonder-ROM war 
mir RAM bei 3000H wichtiger.

Das Board erzeugt die Freigabe-Signale /ROM, /RAM, /FLO, /KB und /VID 
und das Steuersignal /MRD fr die Lesetreiber des RAMs. Diese Signale 
sind an die entsprechenden Punkte auf dem CPU-Board zu fhren; die
ursprnglichen Signale sind zu durchtrennen. 

.bf
Frei zum CPU-Board und zum RB-EXP1 zu verdrahtende Signale

Signal   Pin des 20L8   zu verbinden mit   zu durchtrennende Leitung 
----------------------------------------------------------------------
/RAM        22          Z37,74LS367,Pin15   von Z36,74LS04,Pin2    #1
/MRD        17          Z9,74LS367,Pin1     von Z21,74LS20,Pin8    #2
/KB         20          Z7,74LS368,Pin1     von Z35,74LS32,Pin3
/VID        19          Interboard-Conn.    von Z37,74LS32,Pin11
                            Pin10
/FLO        18          RB-EXP1, Z18,       RB-EXP1, Z14,
                          74LS15,Pins2,14      74LS32,Pin11        #3 
----------------------------------------------------------------------
  #1  bei Aufrstung auf 64K (256K) RAM besteht diese Verbindung als
      freie Verdrahtung; dieser Draht wird entfernt  
  #2  bei Entfernen von Z21,74LS20 entfllt das Durchtrennen
  #3  Z13,74LS30 auf dem EXP1 kann entfernt werden
      anstelle von /MWR von Z15,74LS32,Pin3 auf dem CPU-Board mu
      /BWR von Z16,74LS367,Pin11 an das EXP1 gefhrt werden, damit der 
      Betrieb ber die Ports E0H-EFH mglich ist
      
Das Freigabesignal /ROM ist auf dem Huckepack-Board direkt an die Pins 
20 und 22 des EPROMs gefhrt. 

Die Erzeugung dieser Freigabesignale ist aus dem Assembler-Listing fr 
das PAL20L8 zu ersehen. Die Adreeingnge A14 und A15 dieses PALs sind 
nicht die Adressen A14 und A15 der CPU. Diese Signale werden aus 2 
XOR-Gattern (74LS86) aus den Adressen A14 und A15 der CPU erzeugt. Mit 
Q4 des Latch lt sich damit steuern, ob A14 und A15 invertiert oder 
direkt an das PAL gelangen. 

.bf
PAL-Assembler-Listing fr das Adredecoder PAL20L8

PAL20L8
GENIE 1 Adredecoder mit mm-I/O-Switching
                   04.09.88  H. Bernhardt 

A13 A11 MERQ RD A8 A9 A10 Q3 A15 Q1 PEX GND
ADR A14 MRD Q0 ROM FLO VID KB Q2 RAM A12 VCC

/ROM  = /Q0 */MERQ */RD */A15 */A14 */A13
      + /Q0 */MERQ */RD */A15 */A14 * A13 */A12
/FLO  = /Q1 */MERQ */A15 */A14 *A13 *A12 */A11 *A10 *A9 *A8 */ADR
      +  Q1 */PEX
/KB   = /Q2 */MERQ */RD */A15 */A14 *A13 *A12 *A11 */A10 */A9 */A8
/VID  = /Q3 */MERQ */A15 */A14 *A13 *A12 *A11 *A10
/RAM  = /MERQ *ROM *FLO *KB *VID
/MRD  = /MERQ */RD *ROM *FLO *KB *VID


Um bei den zur Verfgung stehenden Pins des PAL20L8 auch das Signal 
/FLO voll ausdecodieren zu knnen (A4-A15), mute eine Gruppe von 
Adressen (A4-A7) schon zusammengefat (/ADR) und an einen Pin des PALs 
gefhrt werden. Auch fr das alternativ von einer Portadresse herzuleitende
/FLO war ein vorheriges Ausdecodieren von /IORQ, A4-A7 ntig (/PEX).
Diese Signale werden vom PAL16L8 erzeugt, an das fr das Erzeugen von
/OUTFC (Freigabe des Steuer-Latch) ohnehin schon die Adressen A0-A7 und
/IORQ gelangen. 

.bf
PAL-Assembler-Listing fr das I/O-Decoder-PAL16L8 

PAL16L8
GENIE 1 Portdecoder
                  04.09.88  H.Bernhardt
                  
A7 A6 A5 A4 A3 A2 A1 A0 WR GND
RD OFC IOF0 IOF4 IORQ IFC OFB PEX ADR VCC

/OFC   = /IORQ */WR *A7 *A6 *A5 *A4 *A3 *A2 */A1 */A0   ;Pin12
/IFC   = /IORQ */RD *A7 *A6 *A5 *A4 *A3 *A2 */A1 */A0   ;Pin16
/OFB   = /IORQ */WR *A7 *A6 *A5 *A4 *A3 */A2 *A1 *A0    ;Pin17
/IOF0  = /IORQ *A7 *A6 *A5 *A4 */A3 */A2                ;Pin13
/IOF4  = /IORQ *A7 *A6 *A5 *A4 */A3 *A2                 ;Pin14
/PEX   = /IORQ *A7 *A6 *A5 */A4                         ;Pin18
/ADR   = A7 *A6 *A5 */A4                                ;Pin19

Da das PAL16L8 noch einige freie Ausgangs-Pins hatte, wurden noch 
einige weitere Port-Freigabe-Signale decodiert. 


.bf
Funktion der Port-Freigabesignale des PAL16L8

/OFC (/OUT FCH) wird intern zur Freigabe des Sytem-Steuerlatch benutzt
/IFC (/IN FCH)  steht fr die Freigabe eines ber Port FCH zu lesenden
                Treibers zur Verfgung  
/OFB (/OUT FBH) Freigabe-Signal, um ber Port FBH ein Latch zu be- 
                schreiben; kann fr die Freigabe des 74LS273 (Pin11)
                auf dem 256K-Banker benutzt werden (A0-A5 brauchen 
                dann nicht mehr zum Banker gefhrt zu werden, A6 und
                A7 sind fr das Erzeugen einer 8Bit-Refreshadresse 
                dort aber weiterhin ntig; das 74LS30 auf dem Banker
                kann entfallen)
/IOF0 und /IOF4 (/In/OUT F0H-F3H und /IN/OUT F4H-F7H)
                Freigabe-Signale fr z.B. Z80-Peripherie-Bausteine mit
                4-Portadressen (PIO, SIO, CTC, DMAC, PPI8255...)
                
Die Verwendung eines 27128-EPROMs (wovon es auch 150ns-Versionen gibt) 
erlaubt bedeutend hhere Taktraten als die ursprnglichen ROMs. Wenn 
dann auch noch das Timing der Signale /RAS, /MUX und /CAS anders gelst
wird, spielen auch die RAMs mit. 5,3MHz sind auch ohne groe Eingriffe
mglich.

Da das ROM nun innerhalb der Treiber der CPU-Signale liegt, mu zur 
Steuerung der Daten-Lesetreiber auch das Signal /ROM herangezogen werden.
Diese Treiber drfen nicht freigegeben werden, wenn das ROM gelesen wird.

Um dies zu erreichen, wird  Pin9 von IC1,74LS14 durchgekniffen und 
hochgebogen. Auf IC1 wird ein 74LS08  mit den Pins 7 und 14 huckepack 
aufgeltet. Alle anderen Pins des 74LS08 werden hochgebogen. Der
abgekniffenen und hochgebogene Pin9 des IC1 wird mit dem seitlich gebogenen
Pin8 des 74LS08 verltet. Pin10 des 74LS08 wird mit Pin22 des 
27128-EPROMs und Pin9 des 74LS08 mit Pin3 von IC14,74LS00 verbunden 
(Abbildung). 

Zur Freigabe der Speicherlese-Treiber erzeugt das PAL20L8 das Signal 
/MRD, das an Pin15 von IC9,74LS367 zu legen ist. Durch Entfernen von 
IC21,74LS20 wird das bisherige Signal entfernt.

Auer IC21 sind auch IC22,74LS156 und IC25,74LS139 berflssig geworden.
Diese ICs knnen ebenfalls entfernt werden. Und natrlich knnen auch
die alten ROMs rausgeschmissen werden.


.bf
Beim Aufbau des Huckepack-Boards sind folgende Punkte zu beachten:

Vor dem Einlten irgendwelcher Bauteile sind zunchst smtliche
Drahtbrcken zu legen. Als erstes sind dann der Sockel fr den Z80 und
der Stecker fr das Anflanschen des Boards in den Z80-Sockel auf dem
CPU-Board in geeigneter Reihenfolge einzulten. Der Stecker wird auf der 
Ltseite und der Sockel auf der Bestckungsseite eingebaut. Dabei
erschwert das zuerst eingebaute Teil den Einbau des anderen. Was zuerst 
angeltet wird, sollte eine grndliche Besichtigung der Teile ergeben.

Es sollten alle ICs gesockelt werden. Sowohl beim EPROM als auch bei 
den PALs kann irgendwann der Wunsch nach gendertem Inhalt aufkommen. 
Und fr Testzwecke bei der Fehlersuche ist es auch bei Standard-ICs 
zweckmig, wenn man diese auswechseln kann oder einfach nur einzelne 
Pins aus der Fassung biegen kann.

Ungebohrte Boards, mit Level-II befllte 27128-EPROMs und gebrannte 
PALs kann ich zum Selbstkostenpreis zur Verfgung stellen.

